# 1、输入数字n，输出n天前的日期（time或者datatime模块）
import datetime
def getdate(n):
    today = datetime.datetime.now()
    #dt2 = dt - timedelta(days=1)#昨天
    #两个datime相减得到timedelta类型
    differ = datetime.timedelta(days=-n)
    #生成format_time结构化表示
    n_date = (differ + today).strftime('%Y-%m-%d')
    return n_date

time=getdate(7)
print("7天前的日期为：")
print(time)

# 2、输出指定文件夹下有哪些文件或文件夹（实现ls命令， os）
import os
dirs = 'D:/陈滨航/陈滨航...py'
files = os.listdir(dirs)
print(files)

# 3、列表去重，并且从小到大排序
b=[1,32,4,5,56,76,34,32,45,23,32]
b1=list(set(b))
print(b1)
b1.sort()
print(b1)

# 4、如何在一个函数内部修改全局变量
#          在变量面前加global

# 5、如何跨模块共享全局变量
#          创建一个特殊模块（config），然后在每个.py文件里导入这个模块，
#          该模块将作为跨模块的全局变量提供。

# 6、python的基本数据类型有哪些？
#          列表，字典，集合，元组，数字，字符串

# 7、python中生成随机整数（1-10），随机小数（1-10），随机小数（0-1）的方法
import random
print(random.randint(1,10))
print(random.uniform(1,10))
print(random.uniform(0,1))

# 8、python中哪些是可变数据类型，哪些是不可变数据类型
#          可变：列表，字典，集合
#          不可变: 元组，数字，字符串

# 9、a+=1与a=a+1有什么区别
#            a+=1对于有些对象的操作是表示原来的对象，对有些对象的操作是生成了一个新对象
#            a=a+1，表示一个新的对象，新的对象名字还是a，但是指向的内存地址已经变了

# 10、什么是pep8？说出5点它的标准
#              pep8是一种编码规范
#         标准：1.要有缩进
#              2.每行的最大长度为79
#              3.必须要有注释
#              4.命名要规范
#              5.运算符号要有空格

# 11、给定一个字符串，找出字符串第一个重复的字符
def func1(num):
    if set(str(num)) == len(str(num)):
        return None
    else:
        for i in range(len(num)):
            if num[i] in num[i+1:]:
                return num[i]

print(func1('sdfaffdsadga'))

# 12、简述深拷贝与浅拷贝
#          深拷贝：拷贝每一层数据，拷贝后的值不会发生改变
#          浅拷贝：拷贝第一层对象的地址，拷贝后的值可能会发生改变

# 13、简述python内存机制
#          已引用技术为主，分代回收，标记清除为辅的垃圾回收方式，
#          以及小整数型进行缓存和简单字符串驻留的内存机制

# 14、使用python实现冒泡排序，快速排序
# 快速：
b=[1,32,4,5,56,76,34,32,45,23,32]
def quit_sort(b):
    if len(b) < 2:
        return b
    middle = b[0]
    left = []
    right = []
    b.remove(middle)
    for i in b:
        if i > middle:
            right.append(i)
        else:
            left.append(i)
    return quit_sort(left) + [middle] + quit_sort(right)

b=quit_sort(b)
print(b)


# 冒泡：
def func2(num2):
    for i in range(len(num2) - 1):
        for j in range(len(num2) - 1 - i):
            if num2[j] > num2[j + 1]:
                num2[j],num2[j + 1] = num2[j + 1],num2[j]
    return num2
num2=[1,3,34,45,31,11,23]
print(func2(num2))




# 15、验证一个字符串是否属于回文（从左到右，从右到左都是一样）
str0 = input("请输入一个字符串")
str1 = reversed(list(str0))
if list(str0) == list(str1):
    print("这个字符串是回文")
else:
    print("这个字符串不是回文")
